package main

import (
	"cobra_toml/tpl"
	"cobra_toml/util"
	"github.com/hyperledger/fabric/common/flogging"
	"github.com/spf13/pflag"
	"os"
	"path/filepath"
)

var (
	isGenCfg bool
	outDir   []string
	config   string
)
var logger = flogging.MustGetLogger("main")

func main() {
	pflag.BoolVarP(&isGenCfg, "initConfig", "i", false, "是否生成配置模板，默认生成到当前文件夹下/generated文件夹")
	pflag.StringSliceVarP(&outDir, "out", "o", []string{"generated"}, "设置输出文件夹和输出文件名，格式为 --out Dir --out BaseName 。默认为 generated powershell_gen.ps1")
	pflag.StringVarP(&config, "config", "c", "", "指定配置文件路径，默认在当前文件夹下查找powershell_gen.toml")
	pflag.Parse()
	if isGenCfg {
		genConfig("generated")
		return
	}
	if config == "" {
		logger.Info("配置文件未指定！")
		return
	}
	tpl.NewPsGenHandler(config).Generate(outDir...)
}

func genConfig(outDir string) {
	cfgFilePath := "powershell_gen.toml"
	if outDir != "" {
		cfgFilePath = filepath.Join(outDir, cfgFilePath)
	}
	cfgOutFile, err := util.MustCreateFile(cfgFilePath)

	if err != nil {
		logger.Errorf("生成配置文件 %s 时遇到错误：%v", cfgFilePath, err)
		os.Exit(1)
	}
	defer cfgOutFile.Close()
	_, err = cfgOutFile.WriteString(tpl.CfgTplEmpty)

	logger.Noticef("成功生成配置文件 %s", cfgFilePath)
}
